home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 31
/
Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso
/
Aminet
/
comm
/
www
/
Hunt.lha
/
Goodies
/
Spatch.rexx
Wrap
OS/2 REXX Batch file
|
1999-02-04
|
8KB
|
300 lines
/*
*/
sPatch = "c:spatch"
OPTIONS RESULTS
PARSE ARG PubScreen
IF PubScreen == "?" THEN DO
OPTIONS PROMPT "PUBSCREEN/K: "
PARSE PULL PubScreen
END
CALL _InitAll
/*
** Beschreibung der Applikation
*/
appname = 'SpatchGUI'
applongname = 'SPatchGUI - ©1996 by Nils Görs'
appinfo = 'Oberfläche für spatch'
appversion = '1.0'
apprelease = '1'
appdate = '1.11.96'
/*
spatch [-ooutput -ppatchfile] oldfile
*/
_maintags:
windowtags = WindowID(1),
PubScreenName(PubScreen),
WindowBackfillFB,
WindowTitle(appname appversion),
'HorizGroupA Space VertGroupA Space',
'BeginLine',
Text3(' _OutPut:') 'TRAT_ID 1',
StringGadget('',1),
GetFileButton(2),
'EndLine',
'Space',
'BeginLine',
Text3('_PatchFile:') 'TRAT_ID 3',
StringGadget('',3),
GetFileButton(4),
'EndLine',
'Space',
'BeginLine',
Text3(' Old_File:') 'TRAT_ID 5',
StringGadget('',5),
GetFileButton(6),
'EndLine',
'Space',
Button('_StartPatch',10),
'Space EndGroup Space EndGroup EndProject'
/*
** Unterbrechungssignale
*/
SIGNAL ON break_c
SIGNAL ON failure
SIGNAL ON halt
SIGNAL ON ioerr
SIGNAL ON syntax
app = TR_CREATEAPP('TRCA_Name' '"'appname'"',
'TRCA_LongName' '"'applongname'"',
'TRCA_Info' '"'appinfo'"',
'TRCA_Version' '"'appversion'"',
'TRCA_Release' '"'apprelease'"',
'TRCA_Date' '"'appdate'"',
'TAG_END')
IF app ~= '00000000'x THEN DO
window = TR_OPENPROJECT(app,windowtags)
WindowProject=C2D(window) /* zum Locken des Fensters bei About */
IF window ~= '00000000'x THEN DO
nummer = 0
DO WHILE nummer = 0
CALL TR_WAIT(app,'')
DO WHILE TR_HANDLEMSG(app,'event')
/******************
*** CLOSEGADGET ***
*******************/
IF event.trm_class = 'TRMS_CLOSEWINDOW' THEN nummer = -1
/*************
*** GADGET ***
**************/
IF event.trm_class = 'TRMS_ACTION' THEN DO
SELECT
WHEN event.trm_id = 2 THEN CALL _OutPutRequest
WHEN event.trm_id = 4 THEN CALL _PatchFileRequest
WHEN event.trm_id = 6 THEN CALL _OldFileRequest
WHEN event.trm_id = 10 THEN CALL _StartPatch
OTHERWISE
NOP
END
END
/* */
END
END
CALL TR_CLOSEPROJECT(window)
END
CALL TR_DELETEAPP(app)
END
EXIT(0)
_OutPutRequest:
RequesterTitle= '"ASLFR_TitleText" "Please select outputfile (destination)"'
call _FileRequester
IF bool ~= 0 THEN CALL TR_SETATTRIBUTE(window,1,'TROB_String',filename.1)
RETURN
_PatchFileRequest:
RequesterTitle= '"ASLFR_TitleText" "Please select patchfile"'
call _FileRequester
IF bool ~= 0 THEN CALL TR_SETATTRIBUTE(window,3,'TROB_String',filename.1)
RETURN
_OldFileRequest:
RequesterTitle= '"ASLFR_TitleText" "Please select oldfile (source)"'
call _FileRequester
IF bool ~= 0 THEN DO
CALL TR_SETATTRIBUTE(window,5,'TROB_String',filename.1)
OutPut = TR_GETATTRIBUTE(window,1,'TROB_STRING')
IF OutPut == "" THEN DO
OutPut = TR_GETATTRIBUTE(window,5,'TROB_String')
CALL TR_SETATTRIBUTE(window,1,'TROB_String',OutPut||".new")
END
END
RETURN
_FileRequester:
IF CommandPath ~= "" THEN DO
bool = ASL_RequestFile(window,filename,,
"ASLFR_PubScreenName" PubScreen,
"ASLFR_InitialDrawer" CommandPath,
RequesterTitle)
END
ELSE
bool = ASL_RequestFile(window,filename,,
"ASLFR_PubScreenName" PubScreen,
RequesterTitle)
CommandPath=RXTR_PATHPART(filename.1)
RETURN
_StartPatch:
OutPut = TR_GETATTRIBUTE(window,1,'TROB_STRING')
PatchFile= TR_GETATTRIBUTE(window,3,'TROB_STRING')
OldFile = TR_GETATTRIBUTE(window,5,'TROB_STRING')
IF OldFile == "" THEN DO
CALL TR_SendMessage(Window,5,'TROM_ACTIVATE',0)
RETURN
END
IF Output == "" THEN DO
CALL TR_SendMessage(Window,1,'TROM_ACTIVATE',0)
RETURN
END
IF PatchFile == "" THEN DO
CALL TR_SendMessage(Window,3,'TROM_ACTIVATE',0)
RETURN
END
ADDRESS COMMAND sPatch "-o"OutPut "-p"PatchFile OldFile
RETURN
_InitAll:
NL = '0a'x
TRUE = 1
FALSE = 0
Files.0 = 0
CommandPath = ""
/*
** Open libs
*/
IF ~SHOW('LIBRARIES','tritonrexx.library') THEN
IF ~ADDLIB('tritonrexx.library',10,-30,0) THEN
quit('Cannot open tritonrexx.library!',10)
IF ~SHOW(LIBRARIES,'rexxtricks.library') THEN
IF ~ADDLIB('rexxtricks.library',9,-30,38) THEN
quit('Cannot open rexxtricks.library!',10)
IF ~SHOW('LIBRARIES','rexxsupport.library') THEN
IF ~ADDLIB('rexxsupport.library',9,-30,0) THEN
quit('Cannot open rexxsupport.library!',10)
/*
** Set current dir
*/
PARSE SOURCE . . . script .
progdir = PATHPART(script)
booll = LENGTH(progdir)
booli= LASTPOS(":",progdir)
boolh= LASTPOS("/",progdir)
IF booli <= booll THEN progdir2=progdir||"/"
IF boolh == 0 THEN progdir2=progdir||"/"
CALL PRAGMA('D',progdir)
/* Gibt es einen Parameter für den Bildschirm. Wenn nicht, dann wird
der Screen auf dem defaultPubScreen geöffnet. */
IF PubScreen == "" THEN
PubScreen = RXTR_GETDEFAULTPUBSCREEN()
CALL RXTR_PUBSCREENTOFRONT(PubScreen)
RETURN
/*******************************************************************
*** Routine, die das GUI auf einem neuen PubScreen öffnen läßt ***
*******************************************************************/
_NewPubScreen:
IF PUBSCREENLIST('ScreenList') == 0 THEN RETURN
delstart=LSEARCH(PubScreen,Screenlist)
IF delstart ~= -1 THEN RXTR_STEMREMOVE(ScreenList,delstart)
ScreenListTags = WindowID(2),
WindowBackfillFB,
WindowPosition('TRWP_MOUSEPOINTER'),
WindowTitle('öffentlichen Bildschirm wechseln...'),
WindowFlags('TRWF_NOCLOSEGADGET|TRWF_NOESCCLOSE'),
PubScreenName(Pubscreen),
'VertGroupA',
'Space',
'HorizGroupA',
'Space',
ListSel('screenlist',301,0),
'Space',
'EndGroup',
'Space',
'HorizSeparator',
'Space',
'HorizGroupA',
'Space',
ButtonRE('Abbrechen',302),
'Space',
'EndGroup Space EndGroup EndGroup EndProject'
PubScreenProject = TR_OPENPROJECT(app,Screenlisttags)
IF PubScreenProject ~= '00000000'x THEN DO
CALL TR_LOCKPROJECT(window)
DO WHILE ende ~= 1
DO WHILE TR_HANDLEMSG(app,'event2')
IF event2.trm_class = 'TRMS_ACTION' THEN ende = 1 /* Cancel Gadget */
IF event2.trm_class = 'TRMS_NEWVALUE' THEN DO
nummer = TR_GETATTRIBUTE(PubScreenProject,301,'TRAT_Value')+1
PubScreen = ScreenList.nummer
CALL TR_UNLOCKPROJECT(window)
CALL TR_CLOSEPROJECT(PubScreenProject)
CALL TR_CLOSEPROJECT(window)
CALL TR_DELETEAPP(app)
CALL RXTR_PUBSCREENTOFRONT(PubScreen)
fromNewPub=1
CALL _MainTags
END
END
END
ende = 0
CALL TR_UNLOCKPROJECT(window)
CALL TR_CLOSEPROJECT(PubScreenProject)
END
RETURN
/*******************************************************************************
** Routine, die bei einer Unterbrechung des Scripts aufgerufen wird
*******************************************************************************/
break_c:
failure:
halt:
ioerr:
syntax:
SAY '+++ Fehler' rc 'in Zeile' sigl '-' ERRORTEXT(rc)
SAY SOURCELINE(sigl)
IF app ~= '00000000'x THEN
CALL TR_DELETEAPP(app)
EXIT(10)
/*EOS*/